快照

本章节从快照分类、快照原理、快照管理、快照实践场景以及快照使用注意事项介绍快照

功能概述

快照即某一时间点某一磁盘的数据状态文件。做重要操作前,对云主机根云盘、数据云盘或弹性裸金属实例做特定时间点的临时状态保留,方便出现故障后迅速回滚。

最佳实践

  • 在生产环境中,建议单块磁盘的快照数量尽量控制在5以内,快照过多会影响云主机/云盘的I/O性能、数据安全以及主存储容量。
  • 如需长期备份,建议使用灾备服务。

注意事项

  • 在生产环境中,不建议进行高频的定时快照备份。长时间高频定时快照会从I/O、容量、业务稳定性等多方面影响生产环境:
    • 长时间高频定时快照,会导致快照过多,影响云主机业务。例如:对于Ceph存储场景,主要影响云主机写性能;对于本地存储或集中式存储场景,主要影响云主机读性能。
    • 长时间高频定时快照,会导致全量快照相对较多,影响主存储的整体I/O输出。
    • 长时间高频定时快照,会导致快照过多,占用额外的主存储容量。
  • 在生产环境中,为确保数据完整性,不建议对高I/O的云主机创建快照。当云主机内部进行高I/O操作时,对云主机创建快照,内存中存在部分数据没有落入硬盘,这部分数据将无法保存到快照中。
  • 在生产环境中,为确保快照组恢复成功,不建议将普通快照组与包含云主机内存的快照组混用。
  • 快照对系统容量的占用说明:
    • 本地存储或集中式存储场景下,创建增量快照仅占用略微存储空间,创建全量快照会占用一倍存储空间,而删除快照由于快照的合并,会需要Double磁盘空间,对于大规格云盘,不建议使用快照功能。
    • Ceph主存储场景下,创建快照本身不占用额外的存储空间,但创建快照后,对原有磁盘进行写操作可能触发快照的写时复制(Copy-On-Write),从而导致每个快照消耗与原有磁盘相同的存储空间大小。
  • 创建快照对当前业务的影响说明:
    • 一般情况下无影响,但在创建全量快照时,存储网络会有额外的网络I/O产生,特别是本地存储或集中式存储场景,磁盘I/O带宽占用比较明显,但磁盘IOPS基本不受影响。
  • 删除快照对当前业务的影响说明:
    • 一般情况下,删除快照会同时删除其子分支上的快照,并把数据合并(merge)到磁盘中,该过程会有额外的磁盘I/O带宽产生,业务I/O可能略微变慢。

扩展阅读

快照与备份的区别:

  • 快照虽然也会拷贝数据,但是只是另外存储有变化的数据块,而备份会将所有数据都拷贝。
  • 从具体的技术细节上讲,快照是指向保存在存储设备中的数据的引用标记或指针,快照卷中大部分的指针依然会指向原始卷的数据块,对原始卷有依赖,而备份和原始卷是相互独立的,如果有某个数据块损坏,很有可能快照是无法恢复的,因为有可能损坏的数据块就是没有变化过的,而备份则没有关系,可以将数据恢复正常。
  • 简单来说,快照是某个时间点的映像,而备份是对数据的一次拷贝,是多了一个副本。
  • 另外,快照如果创建的多了,会非常影响业务虚拟机的性能,快照的各种链接会使得数据的读写变的非常复杂。
    • 比如Ceph就限制256个快照,因为快照多了以后性能会雪崩式下降。
    • 而且快照创建的多了,也会占用大量的存储空间,因为快照也是需要分配空间的,这样会使得虚拟机磁盘的真实空间大于分配的空间,超出了对存储容量的规划,不利于存储的管理。
  • 快照的作用是对一些操作的临时回滚,是一个临时手段,比如开发测试环境,以及生产环境做一些可能会影响操作系统、业务系统的操作前,对云主机根云盘、数据云盘、或云主机内存做特定时间点的临时状态保留,在异常时快速回滚到正常状态。对数据做完善保护的方法,应该是用灾备服务。

ZStack Cloud云平台快照原理:

  • KVM 虚拟化中使用的镜像格式通常为 RAW (RAW Image Format)和 QCOW2 (QEMU Copy-on-Write, version 2 (2.5))两种格式。
  • RAW即裸盘,它的优点是支持裸设备的原生特性,且性能较qcow2要高,但是它的缺点也很明显就是不支持快照,故对于非Ceph存储(本地存储/NFS/Shared Mount Point/Shared Block),ZStack Cloud云平台采用qcow2外部快照机制。
  • 对于Ceph存储,采用Ceph存储自带的快照功能,即COW。

  • 通常一块磁盘对应一条快照链,支持对一块磁盘创建一棵快照树,快照树的每一个分支都是一条快照链。

  • 对于非Ceph存储,系统默认每条快照链最多有128个节点,用户可在全局设置中,通过修改云盘快照增量的最大数目自行设置快照链的最大长度。
  • 对于Ceph存储,单盘最大快照数量为32,包括手动创建及自动创建的快照。快照链长度达到上限后:若继续创建自动快照,系统会自动删除最早的自动快照。若继续创建手动快照,用户需手动删除不需要的快照。

快照分类:

  • 从技术原理上分为增量快照与全量快照,增量快照又分为COW(Copy On Write)与ROW(Redirect On Write)。
    • COW:写时复制,也叫做元数据拷贝
      • 在创建快照时,并不会发生物理数据的拷贝动作,仅仅是拷贝了原始数据在源数据块的物理位置的元数据,因此创建速度非常快。
      • 而在创建之后,一旦源数据块中的数据发生变化,则会将源数据块中的数据拷贝到新数据块中,然后将新数据写入到源数据块中覆盖原始数据,所有源数据块组成了源数据卷,而新数据块组成了快照卷。
      • 因为每次改写新数据,都需要进行两次写操作,故会降低源数据卷的写性能,更适合于读密集型系统。
    • ROW:写时重定向
      • 与COW不同的是创建快照之后,首次写入操作会重定向到新卷中。
      • 创建快照之前的所有原始数据仍然保存于源卷,且为了保证快照数据的完整性,在创建快照时源数据卷会变为只读状态,新增的数据将写入快照卷的block中。row方式支持创建快照链,新的快照只会记录从上一节点变化的内容。
      • 因为多次读写操作后,某时刻的源数据卷会变得非常离散,会降低连续读写性能,更适合于写密集型的分布式存储系统。
  • 从存储方式上:分为内部快照与外部快照(qcow2)
    • 内部快照:内部快照只支持qcow2格式的虚拟机镜像,把快照及后续变动都保存在原来的qcow2文件内。
    • 外部快照:外部快照在创建时,快照被保存在单独一个文件中,创建快照时间点之后的数据被记录到一个新的qcow2文件中,原镜像文件成为新的qcow2文件的backing file(只读),在创建多个快照后,这些文件将形成一个链——backing chain。外部快照同时支持raw和qcow2格式的虚拟机镜像。

results matching ""

    No results matching ""